Hash functions are any algorithms or other techniques used in computing a condensed digital representation of an input message. That is, hash functions are any reproducible techniques capable of creating a digital “fingerprint” that is representative of the input message, but ideally much smaller. Hash functions are commonly used in digital cryptography and other applications to ensure that a transmitted message arrives intact, without even minor variation. A cryptographically secure hash function, for example, is designed to compute a condensed representation (often called a “digest”) of the original message that is unique to the original message, yet it remains computationally infeasible to ascertain the original message from the digest or to find two different messages that result in the same digest.
A number of well-known secure hash algorithms include the SHA-1, SHA-224, SHA-256 and other algorithms published by the National Institute of Standards and Technology, which are generally based upon 512-bit data blocks and 32-bit data words. More recently, newer algorithms such as SHA-384 and SHA-512 have been published that are based upon 1024-bit blocks and 64-bit words. While these newer standards are well-suited to video and other large-block data, they do typically require a sixty-four bit path for implementation rather than the 32-bit path used in prior algorithms. While this wider bit path may be useful in certain instances, it can entail significant re-design of the 32-bit architectures used in prior designs. Moreover, many Internet security standards and the like still rely upon older, 32-bit techniques, so a 64-bit implementation may represent excess and unused capacity for the majority of the hash computations carried out by many devices. As a result, it is desirable to create hashing systems and techniques that efficiently yet effectively process hash functions of varying bit widths.